package com.pussinboots.morning.sync.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.experimental.Tolerate;

import java.time.LocalDateTime;
import java.io.Serializable;

/**
 * <p>
 * 商品中间表
 * </p>
 *
 * @author TT
 * @since 2019-09-08
 */
@Data
//支持链式风格
@Accessors(chain = true)
@Builder
@TableName("buff_product")
public class BuffProduct extends Model<BuffProduct> {

    private static final long serialVersionUID = 1L;

    /**
     * 解决@Data与@Builder一起使用，实体类没有无参构造函数的坑
     * 此注解让lombok假装不知道有此方法，这样就不会与@Data产生冲突
     */
    @Tolerate
    public BuffProduct() {}

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 商品编号
     */
    private Long productNumber;

    /**
     * 商品名称
     */
    private String name;

    /**
     * 销售价
     */
    private BigDecimal showPrice;

    /**
     * 零售价
     */
    private BigDecimal nationalPrice;

    /**
     * 条形码
     */
    private String barCode;

    /**
     * 生产厂家
     */
    private String supplierNum;

    /**
     * 生产批号
     */
    private String batchNum;

    /**
     * 进货价
     */
    private BigDecimal purchasePrice;

    /**
     * 生产日期格式：yyyy-MM-dd HH:mm:ss
     */
    private LocalDateTime productionTime;

    /**
     * 有效期
     */
    private String expirationDate;

    /**
     * 批准文号
     */
    private String approvalNum;

    /**
     * 规格
     */
    private String specification;

    /**
     * 是否拆零：0_否，1_是
     */
    private Integer pieces;

    /**
     * 中包装
     */
    private Integer mediumPackage;

    /**
     * 件装
     */
    private Integer piecePackage;

    /**
     * 剂型
     */
    private String dosage;

    /**
     * 库存
     */
    private Integer stock;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 说明书
     */
    private String instructions;

    /**
     * 本条记录创建时间（自动）
     */
    private LocalDateTime createTime;

    /**
     * 本条记录创建者
     */
    private String createBy;

    /**
     * 本条记录更新时间（自动）
     */
    private LocalDateTime updateTime;

    /**
     * 本条记录更新者
     */
    private String updateBy;

    /**
     * 必填，0_与此标记无关，1_药事汇标记，2_ERP标记
     */
    private Integer addTag;

    /**
     * 必填，0_与此标记无关，1_药事汇标记，2_ERP标记
     */
    private Integer updateTag;

    /**
     * 必填，0_与此标记无关，1_药事汇标记，2_ERP标记
     */
    private Integer delTag;

    /**
     * 药事汇商品表主键：用于记录新增、更新操作以后主表与此表记录的对应关系
     */
    private Long morningKey;

    /**
     * ERP主键：作用同上
     */
    private Integer erpKey;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    @Override
    public String toString() {
        return "Product{" +
            "id=" + id +
            ", productNumber=" + productNumber +
            ", name=" + name +
            ", showPrice=" + showPrice +
            ", nationalPrice=" + nationalPrice +
            ", barCode=" + barCode +
            ", supplierNum=" + supplierNum +
            ", batchNum=" + batchNum +
            ", purchasePrice=" + purchasePrice +
            ", productionTime=" + productionTime +
            ", expirationDate=" + expirationDate +
            ", approvalNum=" + approvalNum +
            ", specification=" + specification +
            ", pieces=" + pieces +
            ", mediumPackage=" + mediumPackage +
            ", piecePackage=" + piecePackage +
            ", dosage=" + dosage +
            ", stock=" + stock +
            ", description=" + description +
            ", instructions=" + instructions +
            ", createTime=" + createTime +
            ", createBy=" + createBy +
            ", updateTime=" + updateTime +
            ", updateBy=" + updateBy +
            ", addTag=" + addTag +
            ", updateTag=" + updateTag +
            ", delTag=" + delTag +
            ", morningKey=" + morningKey +
            ", erpKey=" + erpKey +
        "}";
    }
}
